/**
 * 
 */
package org.yi.fc.entity;

import java.util.ArrayList;
import java.util.List;

import org.yi.fc.utils.StringUtils;

import com.google.common.base.Preconditions;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.Page;

/**
 * @author ilgqh
 * 文章实体
 */
public class FPost extends Model<FPost> {
	private static final long serialVersionUID = -4802325659453281172L;
	public static final FPost dao = new FPost();
	
	public void save(FPost content){
		Preconditions.checkNotNull(content, "保存文章类型时FcontentType实体不允许为空!");
		this.setAttrs(content).save();
	}
	
	/**
	 * 查询文章
	 * @return
	 */
	public Page<FPost> query(int pageNumber, int pageSize, String keyword, String type, String status){
		
		StringBuilder sb = new StringBuilder("from f_post where 1=1 ");
		List<Object> params = new ArrayList<Object>();
	
		String contentType = get("ftype");
		if(StringUtils.isNotBlank(contentType)){
			sb.append(" and ftype = ?");
			params.add(contentType);
		}
		
		//FIXME 这里最好分开查询， 否则数据量大了以后会耗费很多时间， 有时间可以优化下， 后期也可以建立全文索引搜索
		if(StringUtils.isNotBlank(keyword)){
			sb.append(" and (title like '%?%' ")
			  .append(" or content like '%?%' ) ");
			params.add(keyword);
			params.add(keyword);
		}
		
		if(StringUtils.isNotBlank(status)){
			sb.append(" and status = ? ");
			params.add(status);
		}
		
		if(StringUtils.isNotBlank(type)){
			sb.append(" and ftype = ? ");
			params.add(type);
		}
		
		sb.append(" order by create_time desc");
		
		//jfinal 1.8的bug， 这里参数必须转换成数组
		return paginate(pageNumber, pageSize, "select * ", sb.toString(), params.toArray());
	}
	
}
